Many organizations operate one or more server computers to perform various computing tasks. Each server may communicate with one or more client computers over a network. For example, some server computers communicate with client computers within an organization over a local network, and some server computers communicate with client computers over the Internet. Generally, a server computer executes at least one operating system, and one or more server applications may execute under the control of each operating system. A server application may, for example, carry out tasks on behalf of, or provide services to, applications running on client computers. One common example of a server application is a web server application, which processes requests for information received from browser applications running on client computers and provides information to the browser application responsive to the requests.
In general, the services that a server is equipped to provide to a client computer are defined by modules or components of server applications installed on the server computer. Overall, these services may be thought of as “roles” which the server is capable of performing. A server may be equipped to perform a wide variety of roles. For example, depending on the application modules installed, a server may function as a file server, print server, mail server, web application server, terminal server, remote access and/or virtual private network (VPN) server, directory services server, streaming media server, or other server role. A server may perform any number of roles at a given time.
In accordance with some conventional techniques, information relating to how server application modules are installed and used on a server computer are collected. With some of these techniques, information (referred to herein as “telemetry information” or “telemetry data”) is collected from the server computer and/or the applications thereon, stored on the server computer, and uploaded to an information collection facility (e.g., with the consent of the party that maintains the server computer). Once uploaded, telemetry information may be analyzed to enable, for example, server application providers to refine their applications to make them more useful and less error-prone over time. For example, if an application provider determines based on uploaded information that certain server roles are commonly implemented in combination, the provider may modify the application to allow the roles in question to be more easily combined, or develop new features for one role that complement features in another. In another example, a provider may help customers avoid problems associated with particular implementations. For example, if a provider determines that a particular role is commonly implemented in a server which is ill-configured to support its features (e.g., on a server with access to insufficient network bandwidth), then the provider may suggest that customers avoid this configuration.
Conventional telemetry data typically includes information that enables an information collection facility to associate telemetry data coming from the same originating entity over time. For example, a server computer may include a particular identifier within each set of telemetry data sent to an information collection facility, so that the information collection facility may use the identifier to determine that different sets of telemetry data received over time originated from the same server computer. This identifier is typically constructed to obfuscate the identity of the server computer, so as to preserve the anonymity of the party that maintains and operates it, and to preserve that party's privacy with respect to the implementation and use of server hardware and software.
Virtualization is a technique whereby a computer's resources may be partitioned into separate and isolated “virtual machines,” each simulating a different machine within the same physical computer. Virtualization enables multiple instances of the same, or different, operating systems to run on the same physical computer and prevents applications running under the control of each operating system from interfering with each other's operation. In a system that employs virtualization, a virtual machine (also called a “guest machine”) includes an instance of an operating system (a “guest operating system”), under the control of which one or more applications execute within the virtual machine. Each guest operating system may make requests to employ the computer's hardware to either a “host” operating system (e.g., if each guest machine on the computer runs the same operating system), or a “virtual machine monitor,” or VMM (e.g., if the capability to run multiple operating systems is provided.) In some conventional systems, guest machines are configured to provide telemetry data to an information collection facility.